Skip to content

Add module "musig" that implements MuSig2 multi-signatures (BIP 327)#1479

Merged
real-or-random merged 5 commits intobitcoin-core:masterfrom
jonasnick:musig2-module
Oct 7, 2024
Merged

Add module "musig" that implements MuSig2 multi-signatures (BIP 327)#1479
real-or-random merged 5 commits intobitcoin-core:masterfrom
jonasnick:musig2-module

Conversation

@jonasnick
Copy link
Copy Markdown
Contributor

@jonasnick jonasnick commented Jan 6, 2024

EDIT: based on #1518. Closes #1452. Most of the code is a copy from libsecp256k1-zkp. The API added in this PR is identical with the exception of two modifications:

  1. I removed the unused scratch_space argument from secp256k1_musig_pubkey_agg. This argument was intended to allow using ecmult_multi algorithms for key aggregation in the future. But at this point it's unclear whether the scratch_space object will remain in its current form (see Rework or get rid of scratch space  #1302).
  2. Support for adaptor signatures was removed and therefore the adaptor argument of musig_nonce_process was also removed.

In contrast to the module in libsecp256k1-zkp, the module is non-experimental. I slightly cleaned up parts of the module, adjusted the code to the new definition of the VERIFY_CHECK macro and applied some simplifications that were possible because the module is now in the upstream repo (ge_from_bytes, ge_to_bytes). You can follow the changes I made to the libsecp256k1-zkp module at https://github.com/jonasnick/secp256k1-zkp/commits/musig2-upstream/.

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add MuSig2 module